//package study.springboot.mvc.support.exception;
//
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.web.bind.annotation.ExceptionHandler;
//import org.springframework.web.bind.annotation.RestControllerAdvice;
//import study.eggs.result.Result;
//import study.eggs.result.Results;
//
///**
// * （1）注解 @ControllerAdvice 方式只能处理控制器抛出的异常，此时请求已经进入控制器中
// * （2）类 ErrorController 方式可以处理所有的异常，包括未进入控制器的错误，比如404,401等错误
// * 如果没有配置ErrorController, SpringBoot会通过ErrorMvcAutoConfiguration自动配置一个，
// * 默认的实现类为 BasicErrorController。
// * ErrorController可对全局错误进行处理，但获取不到异常的具体信息，同时也无法根据异常类型进行不同的响应，例如对自定义异常的处理
// * （3）如果应用中两者共同存在，则 @ControllerAdvice 方式处理控制器抛出的异常，类 ErrorController 方式未进入控制器的异常
// * （4）@ControllerAdvice 方式可以定义多个拦截方法，拦截不同的异常类，并且可以获取抛出的异常信息，自由度更大
// */
///**
// * 可以配置拦截指定的类或者包等
// *
// * @RestControllerAdvice 使 @ExceptionHandler 注解的方法默认具有 @ResponseBody 注解
// */
//@Slf4j
////@ControllerAdvice
//@RestControllerAdvice
//public class GlobalExceptionHandler {
//
//    /**
//     * 配置拦截的错误类型
//     * 这里也可以返回 ModelAndView 导向错误视图
//     */
//    @ExceptionHandler(Throwable.class)
//    public Result resolveException(Exception ex) {
//        log.error("", ex);
//        if (ex instanceof VException) {
//            //VException
//            VException vex = (VException) ex;
////            return Results.fail(vex);
//        } else {
//            //other Exception
//            return Results.fail();
//        }
//    }
//}
